Industries that manufacture motor vehicles, airplanes and other complex mechanical equipment require designers and engineers to work concurrently on the same large complex design. The ability to work concurrently on the same design allows multiple users to collaborate on design changes in real-time and both reduce the overall design time and improve the quality of the final designed product.
Computer systems allow designers and engineers to electronically capture and manipulate multidimensional design graphics. The computer software that electronically captures, displays and manipulates graphics displayed on a computer screen is generally referred to as an application program or application. For more than one user to view or work on the same electronically captured image, 3-D intensive graphic, text, or set of numbers at the same time, the application must be shared with each user workstation site. The shared application should provide concurrent and consistent views of the same design images or graphics in real-time at remote user workstations. This changing design trend from sequential to concurrent processed design efforts can improve productivity. To address this evolution, systems and methods must be capable of simultaneously sharing and managing dynamic execution of multiple existing applications at remote workstations.
A first window process-type is an accessible or static window process, which is directly accessible by use of an input device such as a keyboard, mouse or other pointing device that actuates, for example, virtual buttons or sliders. A second window process-type is an inaccessible, or hidden window process, for example, pop-up or pull-down menu items, which are generally not directly accessible. An inaccessible process refers to any hidden process such as a menu item that cannot dynamically receive events managed by other processes.
One type of prior art methodology to ensure synchronization of multiple applications is the delayed synchronization solution. This delayed synchronization solution uses a “record and playback” technology to accomplish synchronization. The primary disadvantages with this delayed synchronization solution is that delayed solutions do not work for ensuring synchronization across multiple applications. The delayed synchronization solution simply captures input, protocol, and plays back what was captured in a single application at a later time. The playback is limited to what was pre-recorded and is too restrictive to use within a cooperative session.
Another type of prior art synchronization utilizes image comparison. The image comparison solutions monitor application synchronization by comparing the graphical output against the archived picture. These image comparison solutions rely upon the users to correct any problems that arise, and are not suitable for ensuring synchronization.
Still another prior art solution to ensure synchronization across multiple applications is accomplished via a two-phase synchronization. This two-phase synchronization (Ready, Execute, Done) separates motion notify events with spacers. The problem with this technique is that the two-phase synchronization does not assure that synchronization will be maintained between many applications. If a problem appears with remote applications that do not listen to the motion notify events, these remote applications query an X server and monitor the cursor position. When the cursor changes position, the X servers create their own motion notify data and act accordingly. This means that no matter how careful the correlation of events collaboration system is at delivering events in a timely and coordinated manner, these remote applications are going to act independently unless something can be done to ensure that the remote applications remain synchronized.
Another problem in synchronization of multiple applications is in preventing users from inadvertently doing something that would break the synchronization, such as simultaneous input from multiple users. This simultaneous input from multiple users can result in these multiple applications across the system processing different data and causing these multiple applications to be in different independent states.
Currently, designers lack the capability of ensuring transparent synchronization of multiple applications across remote systems. Thus, a heretofore-unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.